# -- coding: utf-8 --
from conf.settings import BASE_DIR
import time
# from colorlog import ColoredFormatter



secondary_log_colors = {
    'message': {
        'DEBUG': 'cyan',
        'ERROR': 'red',
        'CRITICAL': 'red'
}
}

LOGGING_DIC = {
    'version': 1.0,  # 默认即可
    'disable_existing_loggers': False,   # 默认即可

    # 日志格式化器
    'formatters': {
        # 标准格式
        'standard': {
            'format': '%(asctime)s  [%(name)s] %(levelname)s [%(pathname)s:%(lineno)d] [funcName:%(funcName)s] 日志信息：%(message)s',
            'datefmt': '%Y-%m-%d %H:%M:%S',
        },
        # 简单格式
        'simple': {
            'format': '%(asctime)s [%(name)s] %(levelname)s  %(message)s',
            'datefmt': '%Y-%m-%d %H:%M:%S',
        },

        # 正式格式 -- 控制台输出带颜色
        'console_formal': {
            # 'format': '%(reset)s%(log_color)s %(asctime)s [%(name)s] %(levelname)s [%(filename)s:%(funcName)s:%(lineno)d] 日志信息: %(message)s',
            'format': '%(asctime)s [%(name)s] %(levelname)s [%(filename)s:%(funcName)s:%(lineno)d] 日志信息: %(message)s',
            'datefmt': '%Y-%m-%d %H:%M:%S',
            # '()': 'colorlog.ColoredFormatter',
            "log_colors": {
                'DEBUG': 'cyan',
                'INFO':  'green',
                'WARNING': 'yellow',
                'ERROR': 'red',
                'CRITICAL': 'red,bg_white',
             }
        },

        # 正式格式 -- 输出到文本，不带颜色
        'file_formal': {
            'format': '%(asctime)s [%(name)s] %(levelname)s [%(filename)s:%(funcName)s:%(lineno)d] 日志信息: %(message)s',
            'datefmt': '%Y-%m-%d %H:%M:%S',
        },

        # 测试日志的格式 -- 颜色统一为蓝色 blue)
        'test': {
            'format': '%(asctime)s  [%(name)s] -- %(levelname)s  [%(filename)s:%(funcName)s:%(lineno)d] 日志信息: %(message)s',
            'datefmt': '%Y-%m-%d %H:%M:%S',
            # '()': 'colorlog.ColoredFormatter',
        }
    },




    'filters': {},  # 过滤器，默认即可

    # 日志处理器
    'handlers': {
        # 将日志输出到终端
        'console_debug_handler': {
            'level': 'DEBUG',  # 日志处理的级别限制
            'class': 'logging.StreamHandler',  # 输出到终端
            'formatter': 'console_formal'  # 日志格式
        },

        # 使用日志轮转输出到文件
        'file_info_handler': {
            'level': 'DEBUG',  # 日志处理的级别限制
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件
            'filename': BASE_DIR+'/logs/log_'+ time.strftime("%Y%m%d", time.localtime())+'.log',  # 文件存放路径
            'maxBytes': 1024*1024*100,  # 日志文件大小100M
            'backupCount': 10,  # 日志文件备份保存数量限制
            'encoding': 'utf-8',  # 日志文件的编码
            'formatter': 'file_formal'  # 日志格式
        },

        # 将测试日志输出到终端
        'console_test_log_handler': {
            'level': 'DEBUG',  # 日志处理的级别限制
            'class': 'logging.StreamHandler',  # 输出到终端
            'formatter': 'test'  # 日志格式
        },

    },

    # 日志记录器
    'loggers': {
        # # 设置logger1,导入logging.getLogger('XXX'),传入的的名字是logger1就会使用这个
        '测试日志': {
            'handlers': ['console_debug_handler', 'file_info_handler'],
            'level': 'DEBUG',  # 日志处理的级别限制
            # 'level': 'ERROR',  # 日志处理的级别限制
            'propagate': False,  # 默认为True,向上（更高级别的logger）传递
        },

        # 设置logger2,导入logging.getLogger('XXX'),传入的的名字logger2，就会使用这个
        # 'logger2':  {
        #     'handlers': ['console_debug_handler', 'file_debug_handler'],
        #     'level': 'INFO',  # 日志处理的级别限制
        #     'propagate': False,  # 默认为True,向上（更高级别的logger）传递
        # },

        # 设置没有名字的logger,导入logging.getLogger('XXX'),传入的的名字不是logger1、logger2，就会使用这个
        '': {
            'handlers': ['console_debug_handler', 'file_info_handler'],
            'level': 'INFO',  # 日志处理的级别限制
            # 'level': 'ERROR',  # 日志处理的级别限制
            'propagate': False,  # 默认为True,向上（更高级别的logger）传递
        },
    }

}


